/**
 * date: 2022/3/11
 * description:
 * author: 19761
 */
/**
 * 给定一个数字数组，找出其中不含有重复数字子集的最大和；
 *
 * 示例 1:
 * 输入: s = [1,2,3,1,2,3,2,2]
 * 输出: 6
 * 解释: 因为最长无重复数字序列是 1，2，3，所以最大和为6。
 *
 * 示例 2:
 * 输入: s = [2,2,2,2,2]
 * 输出: 2
 * 解释: 因为最长无重复数字序列是 "2"，所以最大和为2。
 *
 * 示例 3:
 * 输入: s = [1,2,2,3,4,2]
 * 输出: 9
 * 解释: 因为最长无重复数字序列是 "2，3，4"，所以最大和为9。
 * 请注意，不可为去重后的序列，所以1，2，3，4是不行的
 *
 * 示例 4:
 * 输入: s = []
 * 输出: 0
 */

function fn(arr=[]) {
    if (!arr.length) return 0;
    let max = arr[0];
    let noRepeatArr = [arr[0]];
    for (let i = 1; i < arr.length; i++) {
        const current =  arr[i];
        const index = noRepeatArr.indexOf(current);
        if (index < 0) {
            noRepeatArr.push(current);
            continue;
        }
        let re = noRepeatArr.reduce((pre, curr) => {
            return pre + curr
        }, 0)
        if (re > max) max = re;
        noRepeatArr = noRepeatArr.slice(index+1)
        noRepeatArr.push(current)
    }

    return max;
}

console.log(fn([1,2,2,3,4,2]))
console.log(fn([2,2,2,2,2]))
console.log(fn([1,2,3,1,2,3,2,2]))
console.log(fn([]))